//用来在案例代码识别出加载到Demo的代码，且展示源码等（返回源码和标题）
import fs from 'fs'
import {baseParse} from '@vue/compiler-core'

export default {
  vueCustomBlockTransforms: {
    demo: (options) => {
      //遍历读取文件，为了使得以下可从中寻得含demo标签的源码文件
      const { code, path } = options
      const file = fs.readFileSync(path).toString()
      //查询含demo标签的文件，返回出文件的所有源码
      const parsed = baseParse(file).children.find(n => n.tag === 'demo')
      const title = parsed.children[0].content
      const main = file.split(parsed.loc.source).join('').trim()
      //__用于保密组件代码的展示
      return `export default function (Component) {
        Component.__sourceCode = ${JSON.stringify(main)}
          Component.__sourceCodeTitle = ${JSON.stringify(title)}
      }`.trim()
    }
  }
};